#include "mock_manager_recording_state.hpp"
#include "mock_manager_replaying_state.hpp"
#include "invalid_operation_exception.hpp"

namespace vimock {
mock_manager_recording_state::mock_manager_recording_state() :
	recorder() {
}

mock_manager_recording_state::~mock_manager_recording_state() {
}

object mock_manager_recording_state::invoked(invocation inv) {
	recorder.record_invocation(inv);
	return 0;
}
void mock_manager_recording_state::record_value_to_return(object value_to_return) {
	recorder.record_value_to_return(value_to_return);
}
void mock_manager_recording_state::record_exception_to_throw(exception_thrower ex_to_throw) {
	recorder.record_exception_to_throw(ex_to_throw);
}
mock_manager_state mock_manager_recording_state::replay() {
	mock_manager_state replaying_state(new mock_manager_replaying_state(recorder.get_behaviors()));
	return replaying_state;
}
void mock_manager_recording_state::verify() {
	throw invalid_operation_exception();
}
}
